package day3;

import java.util.PriorityQueue;
import java.util.Scanner;

//模拟+贪心+堆

//显然，每次将最大的偶数/2即可使sum最大

//能够动态的维护最大/最小值  -> 堆
public class 除2 {
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		int n=in.nextInt(),k=in.nextInt();
		//建大根堆
		PriorityQueue<Integer> heap=new PriorityQueue<Integer>((a,b)->{
			return b-a;
		});
		
		//偶数入堆，计算总体和
		long sum=0,x;
		for(int i=0;i<n;i++) {
			x=in.nextLong();
			if(x%2==0) {
				heap.add((int)x);
			}
			sum+=x;
		}
		
		//堆顶元素不断/2并更新sum
		while(!heap.isEmpty()&&k--!=0) {
			long tmp=heap.poll()/2;
			sum-=tmp;
			if(tmp%2==0) {
				heap.add((int)tmp);
			}
		}
		System.out.println(sum);
	}

}
